#include "httplib.h"
using namespace httplib;
using namespace std;

void Hello(const Request& req, Response& res)
{
  res.set_content("Hello World!", "text/plain"); //设置内容
  res.status = 200; //设置状态
  return;
}

void Numbers(const Request& req, Response& res)
{
  auto num = req.matches[1]; //matches[0]保存的是整个访问路径,matches[1]...以及往后的下标保存的是捕捉的数据
  res.set_content(num, "text/plain");
  res.status = 200;
}

void Multipart(const Request& req, Response& res)
{
  auto ret = req.has_file("file");
  //没有此文件
  if(ret == false)
  {
    cout << "Not File Unload" << endl;
    res.status = 400;
    return;
  }
  //有此文件
  const auto& file = req.get_file_value("file"); //获取此文件的属性内容
  //设置返回res
  res.body.clear(); //清空正文
  res.body += file.filename; //文件名称
  res.body += "\n";
  res.body += file.content; //文件内容
  res.set_header("Content-Type", "text/plain");
  res.status = 200;
  return;
}

int main()
{
  Server ser;
  ser.Get("/Hello", Hello);
  ser.Get(R"(/Number/(\d+))", Numbers); //(\d+)是正则表达式,表示捕捉多个数字
  ser.Post("/Multipart", Multipart);
  ser.listen("0.0.0.0", 9090);
  return 0;
}
